Ever since computer systems evolved from research novelty to true business tools, one of the most important benefits of using computer systems has been their ability to store and provide access to large amounts of electronic data. Because data can be voluminous and complex, it typically must be organized in order to be useful. Early systems organized data in computer file systems that consisted of separate and unrelated files. These systems required data processing specialists to create custom application programs that could extract data from the files and place it into useful reports. There were a number of inefficiencies associated with storing data in file systems. For example, these systems often stored duplicative data that lead to data inconsistency. In addition, the file systems typically exhibited data dependence, which meant that any changes to a file in the file system required corresponding changes to every program that used that file. Soon computer programmers realized that management of file system data would be more and more difficult as the amount and the complexity of the data increased.
As a result, databases were created to store and manage data. A database is an organized collection of data. In contrast to the disparate and unrelated files of early file systems, databases stored data in a single data repository. Many different theoretical database constructs were proposed to solve the critical shortcomings of the early file systems. These theoretical data constructs may be referred to as database models. A database model is essentially a collection of logic that is used to represent the structure and relationship between data stored in a database.
Among the database models that achieved commercial success were the hierarchical model, the network model, and the relational model. The hierarchical model is based on a tree structure that is composed of root segments, parent segments and child segments. The hierarchical model describes a group of one-to-many (1:M) relationships between the parent nodes and the child nodes. The hierarchical model suffered from certain problems. Notably, the hierarchical data model lacked an ad hoc querying capability and was not adept at modeling many-to-many (M:M) relationships. More recently, the object-oriented database model has achieved some commercial success. The object-oriented model is loosely based on the hierarchical model in that it generally uses a hierarchical record structure.
The network database model was devised as a solution to some of the problems of the hierarchical model. It provided a standard data manipulation language (DML) for querying the database, and a data definition language (DDL) for defining the database. In spite of these improvements, the network model still suffered from the problem of structural dependence. Any change made to the database structure required that all schema definitions be revalidated before application programs could re-access the database.
The relational model, first developed by E. F. Codd in 1970 further addressed the problems identified above. It structured data logically into tables made up of rows and columns. Tables are hooked together via common attributes known as keys. A primary key is one or more columns in a first table that serve to uniquely identify a row in the table. A foreign key occurs when the columns of a primary key of a first table are present in a second table. Many of the commercial database management systems (DBMS's) of today are based on the relational database model. Examples of such systems are Oracle, DB2, Sybase, MS SQL Server, and MySQL.
A data definition language and a data manipulation language are typically provided for the relational model in the form of the structured query language (SQL). SQL is a database language that provides data definition services, data manipulation services and data query services. Using SQL, programmers are able to make changes to a relational database through the use of approximately thirty commands that are designed to work with any application that requires the manipulation of data stored in the relational database. SQL is a nonprocedural language which requires only that the programmer specify what must be done rather than how it must be done. In this sense, SQL is at a higher level of abstraction than many other programming languages.
One problem with the relational model is that different systems require different designs. Each time a new system is created, a person must create a database design consisting of tables and key values that are logically connected to the real world system that is being modeled. Further, integrating different relational databases can be a very difficult because of the infinite number of possible structures available for modeling real world data.
The inventors of the present invention perceived a need for a new, more pragmatic approach to database system development based on a single unified data structure. Accordingly, a new data model was developed that utilized a language-based data model with a finite set of data relations. This data model is referred to herein as a Metamodel. The Metamodel was created out of the recognition that the historical approach to computer database systems works from the basic assumption that no common structure to data exists. In other words, the historical approach started with the basic assumption that data must be structured in a design so that it may be useful to those that need to access the data. Thus, when complex data systems were designed, a custom database structure and design needed to be created to represent the relationships between the various data items stored in the system. As a result, different systems have different database designs.
In contrast to preexisting systems, the Metamodel approach recognizes that all data can be structured within a single database design. Rather than defining data in terms of tables and records (as is done by the traditional approach at the logical level), the Metamodel defines data in terms of units of meaning in a manner similar to how words are classified in the English language as nouns, verbs, adjectives, etc. As such, the Metamodel defines data in a propositional structure. The Metamodel approach differs from the traditional data modeling approach in that it is based on a data language that structures data at the conceptual level.
No matter what data model is utilized for storing data, the data will only be useful if it is readily accessible in a timely fashion to the people who make decisions based on the data. Thus, it is important (no matter what the underlying data model) that tools exist that provide the ability to reach desired data stored in the database. Known methods for accessing data stored in the database require extensive knowledge on the part of the user or developer. For example, in order to develop meaningful queries using SQL with a relational database system, a user or developer must know and understand three things: (1) the underlying data structure in the database; (2) the relationships between the various pieces of data that he wishes to retrieve; and (3) the proper syntax for writing the query in SQL. Accordingly, it would be an improvement to provide a way for users to easily extract relevant data from a database without having knowledge of the underlying structure, relationships, and programming language.
Further, in many database systems, security concerns are paramount. Certain users are allowed to access or modify certain data, but are forbidden from accessing or modifying other data. Often problems arise when users need access to data that they are permitted to see, but that data can only be compiled or calculated through the use of data that they are not entitled to access or modify. Thus, it would be an improvement to provide a security model which allows users to effectively retrieve data from a database without having knowledge of their permissions or restrictions on the database.